A computer system generally consists of a processor and a memory. During a processing operation, the processor has the responsibility of locating and managing information in memory that is necessary for solving the problem at hand. In other words, memory operates as a slave to the processor and only supplies information to the processor when requested. A problem with this construction is that the processor is not free to process other information while locating or managing the information in memory to be processed.
For larger scale problems requiring high computational demands, parallel processing systems which include multiple processors have been developed for simultaneously solving various aspects of a problem. These systems typically include an array of processors linked to a common memory. Such parallel processing systems are well suited for solving problems involving matrix operations; however, difficulties arise in nonmatrix problems because each processor must be programmed so that they are coordinated to timely access stored information to solve various aspects of the problem at hand. Often the programming that is necessary is an extremely difficult and time-consuming task. Another problem in solving nonmatrix-type problems is that memory bottleneck often results.
As an example, the execution by parallel processing systems of rule-based systems is quite limited in speed. The limited speed of execution is typically due to the large number of rules in such systems, the small number of rules relevant to each change in the database, the large variation in the processing requirements of relevant rules, and the small number of changes made to the database between synchronization steps.